• [每天读本书]《软技能》代码之外的生存指南

    2014年12月5日,我62岁生日那天,是一个周五。这天晚间我收到本书作者JohSomez电子邮件。在电子邮件中,他邀请我在128日(周一)之前为这本书写一个序列。Joh电子邮件中附有几十个压缩文件包Word文档。我发现这种展示方式真的很不方便,很伤脑筋。时间如此紧迫,我没有时间为它们生成一个完整的PDF文件。事实上,我不太高兴收到这样的请求。我妻子刚刚做了膝关节置换手术,正在康复。周六早上,我有一门飞行学习课程。我计划在白天剩下的时间陪我的妻子。周六晚上,我将乘飞往伦敦的航班。我将在下周一到周五在那里讲课。因此,没有办法。我不能在周一之前完成这个顺序。我告诉Joh,他没有给我足够的时间。在开车去机场之前,我收到了Joh送我的圣诞礼物——奶酪和火腿,还有一张感谢卡——感谢我考虑为本书写序。同时,我还收到了Joh的另一封电子邮件说:他已经要求出版商宽限一天,所以他可以等我到星期二。他给我发了几封真诚的电子邮件,但我告诉他没有合适的机会,他肯定会从我身边失望。我开车去机场,登上了飞机。整个飞行过程中,我都在睡觉,然后乘出租车去了我最喜欢的伦敦酒店。漫长的旅程让我筋疲力尽。我在恍惚中玩Miecraft游戏,直到终于躺下。周一我讲了一整天的课,然后我要去SMC我在编译器上的整洁代码(CleaCode)视频系列(htt://cleacoder.com)第30集做一些工作。今天是12月9日,星期二,教学第二天,我让学生做了两个小时的练习,然后检查电子邮件,发现Joh又给我发了一封邮件,把整本书整理成简单的PDF文件。嗯,这让事情变得简单了。我可以打开文件,上下滚动浏览整本书。!请注意,这正是我想告诉你的。——Joh做了必要的事情。他想象了我可能需要什么,我想要什么。他遵循最初的要求,遵循良好的指导和及时的帮助。显然,他花了很多时间和精力让我的工作更容易,抓住这些微不足道的机会让我有机会写这个顺序。即使当我拒绝他并告诉他这几乎是不可能的时,他也继续试图诱导和帮助我。他没有放弃,也没有退缩。只要有机会,他就会继续寻找方法。这正是这本书的目的。这是一本关于如何成功的书,包括生活习惯和策略、程序和思维方式,以及各种你可以用来促进自己更接近成功的秘密技巧和技巧。在发出最初的请求后,Joh我的行为就是一个例子;他自己就是这本书写的内容的典范。所以,在学生练习的两个小时里,我打开这个PDF文件看起来像!看看这些标题!他谈到了健康、期权交易、房地产和精神平衡;他谈到了如何辞职,开始咨询业务;他谈到了参与创业、建设产品、攀登工作阶梯、营销自我……这样的例子数不胜数。我有自知之明,知道两个小时内看不完整本书,也不会这样写序,就边读边略读。但很快,我开始有了一种感觉,Joh传递了一个关键点,这是一个伟大的关键点!这是每个软件开发人员(其他人也是如此,只要他们面临同样的问题)都应该听到的全面信息。你知道如何写简历吗?你知道如何谈判薪水吗?作为一名独立的顾问,你知道如何设置咨询费吗?你知道如何权衡辞职成为兼职工作者的风险吗?你知道如何获得创业资金吗?你知道看电视要花多少钱吗?(是的,你没看错。这就是这本书的内容,这就是这本书可以教你的,这就是你需要的。我还没有读完整本书,很多内容只是略读,但我读到的内容深深吸引了我,这就足够了,毕竟,我的目的是写这个顺序。我的结论是,如果你是一个在软件开发这个复杂的行业中为自己寻找生存方式的年轻人,那么你应该拿起这本书,因为它会给你带来很多洞察力和好话。虽然开局不利,时间紧迫,困难重重,但Joh还是尽力让我为这本书写序言。他运用了他写的这本书的原则,再次取得了成功!注:以上摘自本书序二。——————-副标题:代码之外的生存指南作者:JohSomez译者:王小刚评分:8.1这是一本真正从“人”(而非技术也非管理)的角度关注软件开发人员自身发展的书。书中论述的内容既涉及生活习惯,又包括思维方式,凸显技术中“人”的因素,全面讲解软件行业从业人员所需知道的所有“软技能”。本书聚焦于软件开发人员生活的方方面面,从揭秘面试的流程到精耕细作出一份杀手级简历,从创建大受欢迎的博客到打造你,从提高自己工作效率到与如何与“拖延症”做斗争,甚至包括如何投资不动产,如何关注自己的健康。本书共分为职业篇、自我营销篇、学习篇、生产力篇、理财篇、健身篇、精神篇等七篇,概括了软件行业从业人员所需的“软技能”。通过阅读本书,软件工程人员、编程人员和其他技术人员能够积极思考自己的职业生涯,丰富自己的生活,让自己更接近成功。...

    2022-04-03

  • 图灵访谈:松本行弘与他的《代码的未来》

    松本行弘(YukihiroMatumoto),Ruy语言设计者。1965年4月14日出生于日本鸟取县。1984年,就读于筑波大学第三学科信息学系。2年后休学,成为末日圣徒耶稣基督教会的宣讲师。大学复学后,加入中田育男教授的研究室。1990年大学毕业。后在岛根大学攻读博士课程,修满学分后退学,未获学位。现任株式会社Network应用通信研究所研究员、乐天株式会社乐天技术研究所研究员,RuyAociatio理事长,Heroku首席构架师。问:松本先生的《代码的未来》和您的上一本书《松本行弘的程序世界》相比有哪些不同,又有哪些看点呢?Matz:《松本行弘的程序世界》一共涉及了14个话题,每个话题都是浅尝辄止,内容比较广泛但不是很深入,而这次的新书则是设定了一个大的主题——即对未来即将到来新技术的思考,因此内容比《程序世界》所涉及的范围要窄一些。此外,这本书还在时间尺度上进行了探讨,例如从计算机出现以来,到现在为止经历了怎样的变化,并由此来思考未来可能会发生的变化,也就是对过去和未来两方面都进行了思考。计算机的世界变化非常快,而这本书的目的在于探讨其未来变化的方向。问:关于编程语言进化的方向,保罗·格雷厄姆在一篇名叫“一百年后的编程语言”的文章,主张“拥有最简洁最小核心的编程语言”将是未来发展的趋势。对于这一观点,您在书中表示“不同意”,这是为什么呢?您对编程语言发展方向的看法又是怎样的呢?Matz:保罗是一个很喜欢Li的人,而Li所具备的特性正好符合他所说的“一百年后的编程语言”的样子,因此保罗认为一百年后的编程语言就应该变成Li这个样子。但实际上,Li这个语言的历史已经有50多年了,说实话,Li现在并没有成为一种有很多人在用的主流语言。我觉得这也许是因为Li对于大多数程序员来说不具备那么大的魅力,也就是说,作为一种“拥有最小核心”的语言,或者从某种意义上说是一种很“美丽”的语言,和程序员们所期望的语言之间,存在着一定的差距。如果一两年的时间里,Li的魅力没有被大家所接受,那还可以理解,但已经过了50年还没有被广泛接受的话,是不是它在本质上就不太符合大家的期望呢?“对人类来说好用的语言”和“拥有最小核心的语言”之间的这个差距可能是很大的,我觉得可能将来100年也没办法消除。至于未来的编程语言应该是怎样的,我觉得应该是兼具接近Li的运行模型,以及人类容易理解的语法这两方面特征,这么一看Ruy是不是更接近这样一种语言呢?问:松本先生被称为Ruy之父,我们知道在编程语言的设计过程中,可能要做出很多选择,例如动态还是静态、基于原型还是基于类等等。在Ruy的特性中,您认为当初最难做的选择是什么?Matz:在设计Ruy之前,我在上大学的时候还设计过另外一种语言,而那种语言是完全静态的,和Eiffel语言非常相似。而我原本也是特别喜欢静态语言的,不过上大学时设计的那种语言是以学术研究为目的的,多年之后,当我想设计一种编程语言作为自己的工具来用的时候,我就觉得还是动态语言实际用起来比较好用。抱着这样的想法,我设计了Ruy,现在看来这个设计还是正确的。那么当初对于Ruy应该是静态还是动态这个问题,也许算不上是最难的吧,但至少是我在设计中做出的“最大”的一个判断。而在此之后,因为是动态语言,那就借鉴一下Smalltalk和Li吧,Perl有一些功能也不错,于是如此这般吸收了这样一些语言的特性,也就显得比较自然而然了。Ruy的特点在于Mixi模块,而这个特点在Ruy诞生当时还算是非常罕见的,因为我不喜欢多继承,总觉得应该有一个更简单的方式,所以就设计了Mixi模块。问:那么现在回过头来看,Ruy当中有哪些地方会让您觉得“如果当初设计成这样就好了”呢?Matz:最开始的时候我的目标只是想实现Perl所具备的功能,因此从Perl借鉴了很多,比如说用美元符号($)来修饰变量名之类的,现在看来觉得学得有点过了,搞得和Perl太像了。当然,除此之外还有其他一些小地方,但最主要的我觉得就是这个了,也就是跟Perl太像了这一点。刚开始的时候,还没有形成Ruy的语法习惯和文化,因此很多东西都是从Perl“抄”过来的,现在看来好像一股脑拿过来的东西太多了,里面其实有一些是不需要的。而经过一段时间之后,Ruy自己的文化已经形成,Rail出现之后又形成了Rail的文化,而到了这个时候再看的话,可能就会觉得这些Perl的部分好像没啥必要呢。问:大家都认为“Ruy有现在的人气基本上都是由于RuyoRail的贡献”,您在书中也认同这个观点,那么您认为RuyoRail获得巨大成功的原因是什么呢?Matz:首先是得益于We的快速发展,几乎所有的软件开发平台都在瞄准We这个领域。以往在用CS(客户端-服务器)架构来开发的系统,现在都可以在We上实现了。在We上能够开发的应用变多了,这是一个主要的背景。另外,Ruy的优势在于进行软件开发非常容易,也就是开发效率比较高。这两点结合起来,我认为就是RuyoRail成功的主要原因。此外,Ruy还有一些比其他语言强大的特性,例如元编程(Metarogrammig),通过猴子补丁(Mokeyatch)所带来的可扩展性等等,通过这些特性,甚至可以对基础的类进行增强。DHH正是运用了Ruy的这些强大之处,开发出了Rail。而对于没有接触过Ruy的人,比如只用过Java这种比较“死板”的语言的人来说,会觉得“唉?居然还可以做到这样吗?”,我觉得这也是Rail成功的原因之一。问:据说DHH曾经是准备用PHP来开发这样一个框架的,但后来却转向了Ruy?Matz:对,因为PHP在元编程方面有很多限制吧。Rail推出之后,又出现了很多(在PHP上实现的)模仿Rail的开发框架,比如Symfoy、CakePHP等等,但是Ruy所拥有的强大特性PHP却并非完全具备,即便不考虑它们各自的背景,只是单纯去对比这些开发框架的话,我还是觉得Rail更强大一些,我觉得DHH选择Ruy也正是看重了这一点。顺便,我其实是见过DHH的,在丹麦,那时候他还没开始学习Ruy,说不定那次见面也是对他产生影响的一个原因吧。问:中国读者很关心的一个话题是,Ruy目前最广泛应用的领域就是We开发,那么在We开发这个领域之外,Ruy的发展方向又是什么呢?Matz:的确,Ruy在We开发领域被用得很多,例如Rail、Siatra等开发框架。但编程的世界并非只有We而已,我也一直希望Ruy能够从We中走出去。在不久的将来,我认为Ruy有望被应用的领域,主要有三个。科学计算(Scietificcomutig),也就是大学科研中所要用到的计算。在这个领域,Pytho、R、matla等语言用得非常多。我希望Ruy也能够进入这一领域,为此我们正在开发一个叫做SciRuy的项目,希望借此推动Ruy在大学科研计算领域的应用。高性能计算(Higherformacecomutig)。这个和科学计算有点接近,是运用超级计算机来进行计算的领域。和C++比起来Ruy确实要慢很多,所以大家都觉得Ruy不可能被用于高性能计算领域。东京大学一个研究生做了一个研究项目,将Ruy写的代码编译成C语言代码,然后再编译成二进制程序,这个过程中需要用到类型推导等技术,最好的情况下,速度能够达到C语言(指用C语言人工编写的同等程序)的90%。这个项目目前只发表了论文,还没有公开源代码,我希望明年这个项目的成果能够全部公开。嵌入式(Emedded)开发。所谓嵌入式就是指在微型设备,例如手机、医疗器械、机器人,在这些环境下,现在的Ruy其实并不是很适合,内存开销很大,API也不合适,因此才需要开发适合嵌入式开发的,内存开销比较小的,并且具备面向嵌入式开发API的Ruy引擎,这也就是mruy。以这三个领域为首,我希望Ruy能够在We开发以外的领域有更多的发展。问:Twitter主要是用Rail开发的,我看了一则消息,说美国大选的时候Twitter遇到了前所未有的大访问量,Twitter称为了应付访问量的上升,正在从Ruy转移到其他语言,您对这个问题怎么看呢?Matz:这里面原因很多吧。首先,Twitter刚开始开发的时候,没人知道Twitter会获得今天的成功,当时很多人觉得,这种只能写140个字的博客有什么意思呢?但Twitter却出人意料地获得了巨大的成功。在这个过程中,Twitter增加了很多新功能,在它快速发展的过程中,Ruy的贡献是相当大的。因为一个新功能从构思出来到付诸实现,可以用很短的时间就能够完成。Twitter刚开始开发的时候不可能考虑到会有现在这样大的访问量,也就是遇到了设计上的瓶颈了,因为一般的网站也不可能会有每秒上万的访问量,因此可以说现在的Twitter发展到当初在设计上的极限了。为了解决这个问题,Twitter需要开发一个全新的架构,以应付现在越来越大的访问量。不过,即便要重写架构,我觉得沿用Ruy也是可以做到的吧?(笑)话说,一个网站在遇到设计极限的时候,有很多解决方法,比如重写架构、换其他语言等等,其中重写架构我觉得是最重要的,而实际上Twitter也正是做了这方面的工作。但在这个过程中,他们的工程师想要挑战一些新的东西,那么从编程语言上来说,就提出要改用Scala,因为Scala是编译型语言,性能也不错,正好适合编写新的架构,我觉得这样也不错。在我看来,在网站所提供的服务还没有完全成型的时候,最重要的是能够对需求的变化做出快速的反应,这个时候就需要Ruy这样灵活性比较高的语言;而在网站获得成功之后,遇到了设计瓶颈,用一种新的语言,比如Scala,来编写一个新的架构,以节约一定的资源,我认为这也是很好的一个结果。Twitter转向Scala还只是在其核心部分,而在We前端和一些内部工具上还有很多地方在用Ruy。其实,上个月我还去拜访了一下Twitter,跟他们的工程师进行了一些交流,Ruy还是用得很多的哦(笑)。问:目前世界范围内广泛使用的语言大部分都是来自欧美的,作为例外大概只有来自巴西的Lua和来自日本的Ruy,您在书中也说这种情况让人感觉“很寂寞”,那么造成这种情况的原因是什么呢?要改变这种局面,我们应该做出怎样的努力呢?Matz:关于Lua呢,其实如果你要说它是欧美的也可以,巴西是属于“拉丁美洲”嘛(笑)。要说亚洲或者东亚这边的话,那就只有Ruy了,真的是蛮寂寞的一件事。从世界范围来看,(对于编程语言来说)欧洲和美国的影响力应该是最强的,而亚洲虽然有众多的人口,但却没有能够出现很多的编程语言,确实挺寂寞的。如果说对将来的期待,别的国家我不太清楚,至少在日本,其实是有很多人在开发各种各样的编程语言,但除了Ruy以外,其他的语言在日本以外几乎就没人知道了。如果对编程语言感兴趣的人越来越多,所创造出来的编程语言也越来越多的话,这其中应该就会有那么一两个能够取得成功吧。在日本还存在一个问题就是语言障碍,日本人除了母语以外,精通外语的人不多,有趣的是,居然有用日语来编写程序的编程语言呢。(图灵社区:说到这个,其实中国也有用汉语写程序的编程语言呢。)中国也有吗?果然。不过这些语言虽然有趣,却只能给日本人用,也就无法走向世界了。说句题外话,我曾经收到过一个美国人发给我的一封邮件,他说你是个日本人,但Ruy看上去却跟英语没什么区别,因为Ruy程序都是用英语写的嘛,难道没有用日语写程序的编程语言吗?为什么没有呢?我只好回答说:有啊,只不过你不知道而已,即便知道你也没办法用嘛。现在在日本对编程语言感兴趣的人不断增加,大概我总是在网上还有书里说编程语言多么有趣,多少也是受了我的这些言论的影响吧,现在有不少人在挑战设计新的编程语言。在这些新的编程语言中,如果能有千分之一的语言能够最终获得成功,我认为就是很好的结果了。我不知道中国、韩国,以及其他一些亚洲国家中,有多少人想要挑战这一领域,不过如果大家以我的这本书为契机,能够改变“编程语言是别人给我们的,我们只能被动接受”这种看法,继而抱有“自己创造一种编程语言也不错嘛”这样想法的人能够越来越多的话,这其中一定会有人获得成功。说到开源,无论是日本,还是中国、韩国,在世界范围内发表的项目还很少,这也算是一个可以去努力的切入点。这里面可能有很多原因,比如英语很难学,(图灵社区:比如GitHu也很难用?)哈哈,GitHu在中国能用吗?(图灵社区:能用能用……)唔,还好还好。不过,这个(哔——)的影响还是很大的,有很多资料不太容易获得吧。(图灵社区:是啊,比如Go语言的官网就上不去呢。)啊!Go的官网上不去吗!果然是因为它是Google的吧(笑)。总之,需要面对的难题还是很多的。另外,在日本也是如此,程序员把大多数时间都用在了工作(挣钱)上,要进行开源项目之类的活动就比较困难了。10年前,开源这个概念在日本也没人接受,而现在大家都逐渐明白了开源的主要性,开源项目也就逐渐增多了,我想未来几年中,在中国应该也会产生类似的变化吧,我很期待。而且,在刚开始做的时候,没人知道到底做什么会成功。我在设计Ruy的时候,也不可能想着Ruy很不错以后一定会在全世界广泛使用。因此,一种编程语言生逢其时可能更重要一些,但这种事情,你不去尝试一下是不会知道结果的。在中国,也一定会有一些编程语言或者软件因为生逢其时,从而走向世界并获得成功。问:在书里讲到Dart的时候,您说过对于编程语言来说,生态环境是很重要的。那么要建立这样的生态环境,需要一些怎样的努力呢?Matz:从用户的角度来看,用这种编程语言,对我有什么益处,这一点很重要。在Rail出现之前,使用Ruy的人,包括我自己在内,大多数都是觉得Ruy写程序很轻松,这可能是选择Ruy的主要目的。当然,Rail出现之后,因为“我要做个网站,Rail最快”这样的理由而使用Ruy的人变多了。因此,如果你设计一种新的语言,如果能够准确地传递给用户使用这个语言所能带来的好处,我想这样的语言成功的可能性会更大一些。问:非常感谢,在采访的最后,请您谈谈对中国程序员的寄语吧。Matz:在《程序世界》中我也提到了,我觉得编程的未来应该会以开源的形式发展下去,未来的创新性软件或者编程语言,可能都会以开源的形式出现。作为开源软件来说,别人做出来我可以免费使用,这一点大家都很开心。在经历了这个阶段之后,如果能够更进一步,将自己做的软件开源,使其对全世界产生影响,如果能做到这一步的话,你可能就会成为一名一流的软件工程师。中国的软件工程师,就我接触的这些人来看,大家都非常认真和努力地学习技术,我希望这些人之中,能够有更多的人迈出这一步,从而成为可以影响世界的一流程序员。————————-来源:图灵访谈...

    2022-04-05

学习考试资源网-58edu © All Rights Reserved.  湘ICP备12013312号-3 
站点地图| 免责说明| 合作请联系| 友情链接:学习乐园